package com.ruubypay.biz.mvc.workflow.service;

import com.ruubypay.biz.mvc.workflow.model.request.ProcessDefined;
import com.ruubypay.web.common.page.DataGrid;

import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
/**
 * 流程相关业务实现接口
 * @author chenhaiyang
 */
public interface ProcessService {

    /**
     * 获取流程列表
     * @param paramMap 参数列表
     * @param pageNumber 页码
     * @param pageSize 每页显示的条数
     * @return 返回数据集
     */
    DataGrid listDataProcesses(Map<String, Object> paramMap, Integer pageNumber, Integer pageSize);

    /**
     * 删除流程，根据id删除流程 级连删除，不管流程是否启动，都会删除，此操作慎用
     * @param idArray 流程id数组
     * @return 返回删除结果
     */
    int deleteProcessService(String idArray);

    /**
     * 流程的激活或者挂起
     * @param processDefined 流程定义信息
     */
    void suspendedOrNo(ProcessDefined processDefined);

    /**
     * 创建需要打包下载的zip文件
     * @param deploymentId 部署id
     */
    void createzips(String deploymentId);

    /**
     * 将流程映射为模型
     * @param processDefined 流程定义VO对象
     * @throws Exception 抛出不支持的异常
     */
    void addModel(ProcessDefined processDefined) throws Exception;

    /**
     * 根据部署id和文件名称获取xml视图
     * @param deploymentId 部署id
     * @return 返回结果
     * @throws IOException IO异常
     */
    String viewXmlFromDeploymentId(String deploymentId) throws IOException;

    /**
     * 预览png格式的流程图片
     * @param deploymentId 部署id
     * @return 返回值
     * @throws IOException IO异常
     */
    String viewPngFromDeploymentId(String deploymentId) throws IOException;

    /**
     * 导入zip的资源流程文件
     * @param inputStream 输入流
     * @throws IOException IO异常
     */
    void uploadZips(InputStream inputStream) throws IOException;
}
